#include "lvgl_UI.h"

static lv_obj_t *s_led_button=NULL;
static lv_obj_t *s_led_label=NULL;


void lv_button_callback(lv_event_t * e) // 回调事件处理函数
{
    lv_event_code_t code = lv_event_get_code(e); // 获取触发的事件代码
    static int led_state = 0; // 明确声明变量类型为 int

    switch (code)
    {
    case LV_EVENT_CLICKED:
        led_state = led_state == 0 ? 1 : 0; // 修复三元运算符语法
        gpio_set_level(LED_PIN, led_state); // 设置 GPIO 状态

        ESP_LOGI("LV_LED", "LED状态: %s", led_state ? "亮" : "暗");

        break;

    default:
        break;
    }
}

/****************************************************************************************
 * s_led_button 依托显示的屏幕作为创建对象
 * s_led_lable 依托 s_led_button 为创建对象
 * lv_obj_align()对齐方式
 ****************************************************************************************/
void UI_LED_CREATE(void)
{
    //设置屏幕为黑色
    lv_obj_set_style_bg_color(lv_scr_act(),lv_color_white(),0);


    //设置屏幕中的一个对象为s_led_button 位置是中间
    s_led_button=lv_btn_create(lv_scr_act());
    lv_obj_align(s_led_button,LV_ALIGN_CENTER,0,0);//显示这个BUTTON在正中央向x和y偏移量为0
    //设置这个 s_led_button 的颜色为橙色
    lv_obj_set_style_bg_color(s_led_button,lv_palette_main(LV_PALETTE_ORANGE),0);
    lv_obj_set_size(s_led_button,80,40);//设置像素为80*40

    //设置 s_led_button中的一个对象为s_led_label 位置是中间，名字是按钮
    s_led_label = lv_label_create(s_led_button);
    lv_obj_align(s_led_label, LV_ALIGN_CENTER,0,0);
    lv_label_set_text(s_led_label,"LED");//为这个对象添加命名

    //参数： lv_obj_t 字体 默认
    lv_obj_set_style_text_font(s_led_label,&lv_font_montserrat_20,LV_STATE_DEFAULT);//字体默认14，其他字体需要SDK配置
    //中文显示

    // lv_obj_set_style_text_font(s_led_label,&LV_FONT_SIMSUN_16_CJK,0);
    

    //为这个按钮添加按键事件处理，给一个控件添加事件处理函数
    // 组件 事件处理函数 响应事件(长按或者点击之类的，这里选择点击)     事件处理函数参数
    lv_obj_add_event_cb(s_led_button,lv_button_callback,LV_EVENT_CLICKED,NULL);
}

